文件格式

文件格式主要采用txt和xml格式
其中txt文件存放从外部传入的数据
xml存放原始数据

txt文件操作

  1. 使用QFile类打开txt文件(注意采用绝对路径时要使用两个“//”)
1
2
3
4
//---打开文件并读取文件内容
QFile files("data.txt");
//绝对路径,测试成功,采用下面代码
//QFile flies("//hotstar//scan_date//date.text")

2.使用QList类来提取txt文件的内容并采用正则将原始数据进行处理代码如下

1
2
3
4
5
6
7
8
9
QTextStream textStream(&files);
QRegExp rx("(\\d{13})");
while (!textStream.atEnd())
{
rx.indexIn(textStream.readLine());
lists<<rx.cap(1);
}

3.采用Qxml类对xml数据进行处理并与上述中的lists列表进行比较并处理输出(注意qt使用xml时,需要在.pro文件中添加 QT +=xml否则无法运行)

1
2

(1) 使用setContent()函数将xml文档中的内容解析为一个DOM树

1
2
3
4
5
if (!doc.setContent(&file))
{
file.close();
qDebug()<<"file2";
}

(2)使用QDomDocument类中的firstChild()函数获取它的第一个子节点
,使用documentElement函数获取根节点其他操作如下:

函数 含义
lastChild() 获取最后一个节点
childNodes() 获取该节点的所有孩子节点的一个列表
nextSibiling() 获取下一个兄弟节点
previousSibiling() 获取前一个兄弟节点
tagName() 获取标签名
attribute() 获取指定属性的值
text() 获取其中文本内容

代码如下 :

1
2
3
4
QDomNode node = list.at(i);
if(node.isElement())
ui->listWidget->addItem(" " + node.toElement().tagName()
+ " : " + node.toElement().text());

(3)使用forearch()遍历lists的内容,并将符合id的xml节点输出到listwidget上代码如下

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
if (n.isElement())
{
QDomElement e = n.toElement();
foreach (QString str, lists) {
if(str==e.attribute("id")){
qDebug()<<e.attribute("id");
QDomNodeList list = e.childNodes();
for (int i=0; i<list.count(); i++)
{
QDomNode node = list.at(i);
if(node.isElement())
ui->listWidget->addItem(" " +node.toElement().tagName()
+ " : " + node.toElement().text());
}
}
}
}